/*
topk 问题 构建 小顶堆，即堆顶元素最小，如果 堆顶元素 小于 nums[i],则将 nums[i]放入堆中，重新调整堆。

遍历完数组后，小顶堆的堆顶，即为 第 K 大的元素
*/
class Solution {
    public int findKthLargest(int[] nums, int k) {
        PriorityQueue<Integer> queue = new PriorityQueue<>();
        for (int i = 0; i < nums.length; i++) {
            if (i < k) {
                queue.offer(nums[i]);
            } else {
                if (queue.peek() < nums[i]) {
                    queue.poll();
                    queue.offer(nums[i]);
                }
            }
        }
        return queue.peek();
    }
}